Ревьюер
Проверено
Согласовано
Комментарий (замечания, предложения)
Неизвестный пользователь (yuliya.semina) 

  • Предложение: добавить информацию о том, что парсинг шаблона  и файла проходит до первой пустой колонки. 
  • Опечатка в формате даты:  "DD.MM,YYYY"
Неизвестный пользователь (asvoronin@it-one.ru) 


GIT: https://git.gosuslugi.local/ervu/source/ervu-validate-recruits

Назначение

Сервис форматно-логического контроля(ФЛК) ervu-validate-recruits предназначен для проверки файла в формате csv, полученного из личного кабинета реестра повесток для юридических лиц(ЛК РП ЮЛ). 

Описание

Сервис выполняет следующие функции:

  • Подписывается на топик ervu.lkrp.download.request, который заполняется ЛК РП с информацией об успешной проверке файлов на вирусы.
  • Скачивает файл из хранилища S3.
  • Выполняет первичную проверку файла на соответствие формату и структуре, ориентируясь на шаблоны, хранящиеся в S3.
  • Возвращает ответ в топик ervu.lkrp.download.response с одним из статусов: Код 04, 05, 09, 10
  • Проводит вторичную проверку файла, снова ориентируясь на шаблоны из S3.
  • Отправляет ответ в топик ervu.lkrp.validate.response в формате JSON, содержащий информацию о валидации файла, включая данные о корректно и/или некорректно заполненных строках.

Валидация файла

Первичная проверка:

  1. Загруженный файл должен быть в формате csv с кодировкой UTF-8.
  2. Разделительный знак точка с запятой ";" 
  3. Файл должен соответствовать выбранному приложению(шаблону) для заполнения(расположение, название и количество столбцов).
    1. Сравнение шаблона с файлом пользователя осуществляется до первого пустого столбца в шаблоне.
    2. Шаблон на стороне сервера в формате xlsx.

Вторичная проверка:

  1. Проверка строк на наличие пустых значений во всей строке. Тогда валидация файла должна быть сделана до этой строки, не содержащей в себе полезной нагрузки.
  2. Проверка на заполненность обязательных полей: Наименование военного комиссариата, Фамилия, Имя, Дата рождения, Пол, Серия паспорта, Номер паспорта, Дата выдачи паспорта, СНИЛС. Минимум одно из трех полей должно быть заполнено: Адрес регистрации по месту жительства, Адрес регистрации по месту пребывания, Адрес фактического проживания (Кроме 2 приложения). А также: 
    1. Для приложение 9: Работник/Учащийся, Принят/зачислен/уволен/отчислен.
      А также: 
      • Сценарий 1: если поля Работник/Учащийся заполнено значением из справочника Работник и Принят/зачислен/уволен/отчислен = Принят. Тогда обязательные поля: Дата приема на работу/поступления в образовательную организацию, Должность/наименование профессии/специальности/направления подготовки, Номер трудового договора, Дата трудового договора.
      • Сценарий 2: если поле Работник/Учащийся = Учащийся и Принят/зачислен/уволен/отчислен = Зачислен. Обязательные поля: Дата приема на работу/поступления в образовательную организацию, Должность/наименование профессии/специальности/направления подготовки, Номер приказа о приеме/зачислении/увольнении/отчислении, Дата приказа о приеме/зачислении/увольнении/отчислении.
      • Сценарий 3: если поле Работник/Учащийся = Работник и Принят/зачислен/уволен/отчислен = Уволен. Обязательные поля: Дата увольнения с работы/отчисления из образовательной организации, Номер приказа о приеме/зачислении/увольнении/отчислении, Дата приказа о приеме/зачислении/увольнении/отчислении.
      • Сценарий 4: если поле Работник/Учащийся = Учащийся и Принят/зачислен/уволен/отчислен = Отчислен. Обязательные поля: Дата увольнения с работы/отчисления из образовательной организации, Номер приказа о приеме/зачислении/увольнении/отчислении, Дата приказа о приеме/зачислении/увольнении/отчислении.
      • Сравнение дат:
        • Дата приема на работу/поступления в образовательную организацию должна быть меньше или равна полям Дата увольнения с работы/отчисления из образовательной организации, Дата приказа о приеме/зачислении/увольнении/отчислении, Дата трудового договора. Допускается, когда Дата увольнения… пустое.
        • Дата увольнения с работы/отчисления из образовательной организации должна быть меньше или равна полям Дата приказа о приеме/зачислении/увольнении/отчислении
      • При заполнение Работник/Учащийся в поле Принят/зачислен/уволен/отчислен должен быть только один из 2 вариантов:
        Работник:  Принят или Уволен.
        Учащийся: Зачислен или Отчислен

    2. Для приложение 10: Занимаемая должность (курс/класс), Номер телефона.

    3. Для приложение 11: Занимаемая должность (курс/класс), Номер телефона.

    4. Для приложение 12: Образование, Семейное положение, Должность (профессия).

    5. Для приложение 2: Вид изменений, Содержание изменений.

  3. Формат и валидность данных: 
    1. ФИО: не содержит латиницу, цифры и спец. знаки, кроме "-" и " ".
    2. Формат паспортных данных: Серия и номер паспорта должны состоять из 4 и 6 цифр (формат: "XXXX" "XXXXXX").
    3. Формат СНИЛС: должен состоять из 11 цифр (формат: "XXX-XXX-XXX XX").
    4. Формат даты: все даты (например, "Дата рождения", "Дата приема на работу/поступления в образовательную организацию", "Дата приказа", "Дата трудового договора") должны быть из цифр в формате "DD.MM.YYYY". Проверка на корректность формата и существование даты (например, нет ли даты 30 февраля).
    5. Адреса, должности/профессии/специальности/направления подготовки, наименование образовательного учреждения и т.п.: не содержат латиницу и знаки "!", "?", "@", "%", "$" и т.п. (используются: дефис "-", скобки "()", апостроф "'", косая черта "/", амперсанд "&", кавычки """, запятая ",", точка ".", плюс "+")
  4. Проверка соответствия с листом "Справочник". Название столбцов должно совпадать и их ячейки должны быть заполнены вариантами из Справочника.
  5. Логические проверки:
    1. Дата приема… должна быть раньше Даты приказа:
      В шаблоне Прил_9_Приемзачисление_увольнениеотчисление: "Дата приема на работу/поступления в образовательную организацию" <= "Дата приказа о приеме/зачислении/увольнении/отчислении"
    2. Если есть Дата увольнения..., она должна быть позже Дата приема…:
      В шаблоне Прил_9_Приемзачисление_увольнениеотчисление: "Дата приема на работу/поступления в образовательную организацию" <= "Дата увольнения с работы/отчисления из образовательной организации"
  6. Проверка на скрытые символы. На пример: NBSP символ неразрывного пробела в тексте.

Статусы файла:

Код
Статус
Описание
1Загрузка. ЛК РПФайл принят до проверки на вирусы.
2Проверка не пройдена ЛК РППроверка на вирусы не пройдена
3Направлено в ЕРВУ ЛК РППроверка на вирусы пройдена успешно, файл направлен в очередь
4Получен ЕРВУФайл был принят в обработку
5Отклонено ЕРВУСтруктура файла не соответствует шаблону
6Принято частично ЕРВУЧасть записей не прошла проверку ФЛК
7Принято ЕРВУВсе записи успешно прошли проверку ФЛК
8Ошибка валидацииОшибка при прохождении валидации
9Не получен ЕРВУНе удалось получить файл
10Отклонен ЕРВУКодировка csv отличается от стандарта UTF-8
11
Невозможно проверить файл ЛК РП
Невозможно проверить файл по причине недоступности или ошибки в работе антивируса
12Некорректная ЭПНеуспешная проверка ЭП
13

Некорректная МЧД

Неуспешная проверка МЧД

Коды ошибок

Код ошибкиОписаниеДействия
SUC01Пройден ФЛКВозвращаем номера строк
ERR01Документ не соответствует шаблонупрекращаем проверку
ERR02Обязательные поля не заполненыВозвращаем номера строк
ERR03Дублирующиися записи

Возвращаем номера строк

ERR04Дублирование паспорта или СНИЛСВозвращаем номера строк
ERR05Неверный формат датыВозвращаем номера строк
ERR06Неверно заполнены паспортные данныеВозвращаем номера строк
ERR07Неверно заполнен СНИЛСВозвращаем номера строк
ERR08Значение не соответствует справочникуВозвращаем номера строк
ERR09Несоответствие датВозвращаем номера строк
ERR10Неверное количество заполненных колонокВозвращаем номера строк
ERR11Содержит латиницу, цифры или недопустимые спец.символыВозвращаем номера строк
ERR12Содержание скрытых символовВозвращаем номера строк
ERR13Несоответствие взаимосвязанных значенийВозвращаем номера строк
ERR14Дата не может превышать текущуюВозвращаем номера строк

Отображение на фронте

ЛК РП

На фронте ЛК РП имеется возможность загрузить 5 видов шаблонов в формате CSV.

PDF

Загрузка файла
PDF
Сведения направлены
PDF

Топики Kafka

Consumer

ervu.lkrp.download.request

Ответ от ЛК РП ЮЛ о успешном проверенном файле на вирусы 

Пример сообщения Развернуть исходный код

Producer

ervu.lkrp.download.response

Ответ после первичной проверки с одним из статусов (Код 04, 05, 08, 09). Данный топик слушает сервис ervu-organization-registry команда РП и ЛК РП(Микорд), чтобы обновить статус файла.

Пример сообщения Развернуть исходный код

ervu.lkrp.validate.response

Ответ после валидации, содержащий информацию о корректно и/или некорректно заполненных строках в файле. Данный топик слушает сервис ervu-organization-registry, чтобы начать парсинг файла.

Пример сообщения Развернуть исходный код

S3 корзины

Сервис имеет доступ к следующим корзинам

Пользователь

Корзина

Права на UAT

ervu-validate-recruitsmz-attachmentread
ervu-validate-recruitsmz-mock-adapterread
ervu-validate-recruitsvalidate-templateread, write
ervu-validate-recruitslkrp-avread

validate-template — корзина, используемая исключительно нашим сервисом, в которой хранятся шаблоны(формы) для сверки с загружаемыми пользователями файлами.

lkrp-av — корзина, создаваемая на стороне ЛК РП и используемая в нескольких сервисах. В этой корзине хранятся файлы, которые прошли проверку антивирусом со стороны ЛК РП. Эти файлы необходимо провалидировать через сервис ervu-validate-recruits и распарсить сервисом ervu-organization-registry.

Схема взаимодействия с сервисами

S3
ervu-validate-recruits
ЛК РП
ervu.lkrp.download.request
ervu.lkrp.validate.response
ervu.lkrp.download.responses
ervu-organization-registry

Файлы по сервису

  1. Формы(Шаблоны) и приложения
  2. Инструкция_по_сохранению_их_CSV_v_1_0_4.docx
  3. Файлы_для_теста_v4 от 02.10.2024


  1. Формы_и_Примеры_от_17.09.2024.7z
  2. Документ
  3. Документ
  4. Файлы_для_теста_v4.7z


Написать комментарий...